import win32clipboard

def get_selected_text():
    # 保存当前剪贴板内容
    original_clipboard = None
    try:
        win32clipboard.OpenClipboard()
        if win32clipboard.IsClipboardFormatAvailable(win32clipboard.CF_TEXT):
            original_clipboard = win32clipboard.GetClipboardData()
    except Exception as e:
        print(f"无法访问剪贴板: {e}")
        return None
    finally:
        win32clipboard.CloseClipboard()

    # 从剪贴板获取文本
    selected_text = None
    try:
        win32clipboard.OpenClipboard()
        if win32clipboard.IsClipboardFormatAvailable(win32clipboard.CF_TEXT):
            selected_text = win32clipboard.GetClipboardData()
        else:
            print("剪贴板中没有文本数据")
    except Exception as e:
        print(f"读取剪贴板失败: {e}")
    finally:
        win32clipboard.CloseClipboard()

    # 恢复原始剪贴板内容
    if original_clipboard is not None:
        try:
            win32clipboard.OpenClipboard()
            win32clipboard.EmptyClipboard()
            win32clipboard.SetClipboardText(original_clipboard)
        except Exception as e:
            print(f"恢复剪贴板失败: {e}")
        finally:
            win32clipboard.CloseClipboard()

    return selected_text

# 使用示例
if __name__ == "__main__":
    text = get_selected_text()
    if text:
        print("选中的文本:", text)
    else:
        print("未获取到选中的文本")